/**
 * token工具
 */
const jwt = require('jsonwebtoken');

/**
 * 签名
 * @param load  载荷 存储对象
 * @param secretkey
 * @param expiresIn  过期时间
 * @return {string} token
 */
function sign(load, secretkey, expiresIn) {
  const token = jwt.sign(load, secretkey, {
    expiresIn: expiresIn
  });
  return token;
}

/**
 * 权限验证
 * @param token 
 * @param secretkey
 * @param success
 * @param error
 */
function verify(token, secretkey, success, error) {
  jwt.verify(token, secretkey, (err, data) => {
    if (err) {
      if (error) {
        error(err);
      }
    }
    console.log(data);
    return data;
  })
}

/**
 * 权限验证，同步
 * @param token
 * @param secretkey
 * @return {Promise <any>}
 */
function verifysync(token, secretkey) {
  return new Promise((reslove, reject) => {
    jwt.verify(token, secretkey, (err, data) => {
      if (err) {
        reslove({ message: err.message, state: 0 })
      } else {
        reslove(data)
      }
    })
  })
}

module.exports = { sign, verify, verifysync };





